Qanopee : une plateforme de rendez-vous médicaux
Le projet consistait à développer et concevoir une plateforme de réservation en ligne appelée Qanopee, spécialisée dans les rendez-vous médicaux connectés aux entreprises. Qanopee a remporté le prix Impact de la French Tech, et sa mission est d'améliorer la qualité de vie au travail en réduisant les risques d'accidents, de maladies professionnelles et l'absentéisme. Les praticiens présents sur la plateforme appartiennent à des professions validées scientifiquement et reconnues par l'État, et chaque profil est vérifié par une personne avant sa mise en ligne.
Ce projet a débuté en juin 2023, jusqu'en septembre 2024. Le principal enjeu a été la migration de la plateforme de la solution no-code Bubble vers une solution basée sur du code. Étant donné que le MVP (Minimum Viable Product) avait déjà été commercialisé, il était impératif de migrer les données tout en construisant la nouvelle plateforme dans un délai extrêmement court.
L'équipe impliquée dans ce projet comprenait le CEO de Qanopee, un développeur provenant d'un SSII (Société de Services en Ingénierie Informatique), ainsi que deux freelances occasionnels.
Tâches & Objectifs
Dans ce projet, mon rôle était d'architecturer la solution technique, d'encadrer le développeur, de prioriser les développements, jouant ainsi un rôle de CTO (Chief Technology Officer) et lead développeur pour la startup. L'objectif était de produire la nouvelle plateforme en moins de 4 mois.
Les critères de réussite étaient de remplacer l'application Bubble par notre nouvelle solution basée sur du code, tout en intégrant des fonctionnalités essentielles telles que la brique de paiement via Stripe, la synchronisation Google Calendar, et l'aspect CMS (Content Management System) au moment du lancement.
Actions et Développement
Mes actions principales incluaient la construction d'un monorepo pour l'ensemble du projet, le développement du frontend pour les particuliers sur desktop, la mise en place des fondations du frontend pour les praticiens (synchronisation des événements dans le calendrier), ainsi que le développement et la mise en place du backend avec Supabase (modèles et edge functions). J'ai également géré l'encadrement du projet et la stratégie de développement.
Le processus de migration a été découpé en plusieurs étapes : migration des données de Bubble vers PostgreSQL / Supabase via des ETL (Extract-Transform-Load), développement du frontend pour les particuliers, en s'inspirant du leader du marché pour optimiser le TTM (Time To Market), et mise en place du frontend pour les praticiens, à un moment où un autre développeur a été embauché, accompagné ponctuellement par un freelance.
Parallèlement, j'ai modélisé et construit le backend. Une fois les deux développeurs pleinement intégrés, je me suis concentré sur le backend pour limiter la surcharge cognitive.
J'ai activement travaillé avec le développeur de l'ESN (Entreprise de Services du Numérique) pour valider ses MR (Merge Requests) et surveiller ses choix techniques. J'ai également collaboré avec trois freelances spécialisés respectivement en migration Bubble, frontend et Stripe, et en mise en place d'un backend en NestJS (framework pour Node.js), plus commun et adapté à des architectures évolutives que les edge functions de Supabase.
Les principaux défis ont été la pression constante et les délais extrêmement serrés, ainsi que les attentes élevées avec des ressources limitées. D'un point de vue technique, les défis ont inclus la mise en place d'un projet complexe via un monorepo orchestré avec NX, la configuration des déploiements dans Vercel et de Supabase, la mise en place de flux de paiement via Stripe, et la synchronisation avec Google Agenda. J'ai également géré les tâches de DevOps (déploiement automatique avec CI/CD et SSL) sur Digital Ocean, tout en étant un tampon entre les développeurs et la vision stratégique de CTO. Finalement, ma concentration s'est tournée vers l'encadrement et la relecture, avec des tâches satellites comme le DevOps ou le débogage de Stripe.
Toutes les décisions ont été prises en fonction de la minimisation du TTM. Cela a influencé la simplicité de la stack technique. Des pratiques telles que les tests n'ont pas été mises en place dès le départ pour éviter toute complexité inutile. Le choix de Supabase s'est avéré crucial, car il offre une base de données PostgreSQL standard et gère des fonctionnalités comme l'authentification, la sécurité, et la gestion de fichiers volumineux. De plus, sa flexibilité et son open-source permettent une migration future vers nos propres serveurs si nécessaire. Le framework Quasar Dev basé sur Vue 3 a également été choisi pour sa simplicité, permettant de développer rapidement les interfaces frontend.
Résultats
Quatre mois après le début du projet, la plateforme était en ligne, avec des fonctionnalités permettant aux praticiens d'obtenir des abonnements SaaS (Software as a Service), aux particuliers de réserver des créneaux pour des consultations en visio, et de payer en ligne. Plus de 500 praticiens utilisent actuellement la plateforme.
Cette expérience a été extrêmement enrichissante, tant sur le plan technique qu'humain. J'ai pu réaliser un projet complet d'envergure, incluant l'intégration de services tiers comme Stripe et Google Agenda. J'ai également encadré, formé, puis dirigé un autre développeur, tout en coordonnant les efforts de développement d'une équipe. Enfin, j'ai acquis une expérience précieuse dans le fonctionnement d'une jeune startup.
À l'issue de mon travail, Qanopee comptait :
- Une application de prise de rendez-vous pour les particuliers
- Une application "CMS" pour les professionnels de santé
- Un backend gérant les transactions monétaires avec Stripe, la gestion des emplois du temps et des agendas, un déversement vers l'agenda Google
Stack Technique
Le projet repose sur les outils et technologies suivants :
- Langages : TypeScript/JavaScript, SQL
- Frameworks : Quasar Dev, Vue 3, Supabase, PostgreSQL, Deno, NestJS
- API tierces : Brevo (gestion des emails et SMS), Stripe (paiement), Google (Calendar et Places)
- Hébergement : Supabase, Vercel, Digital Ocean
Il est important de noter que cette stack technique a été choisie pour minimiser le TTM. Les défis techniques majeurs rencontrés incluent :
- Mise en place des processus Stripe, en prenant en compte le plus possible les cas limites (edge cases)
- Synchronisation avec Google Calendar via des edge functions
- Manque de tests qui a inévitablement conduit à des régressions dans le code, parfois découvertes tardivement